﻿#ifndef BAUDINFO_H
#define BAUDINFO_H

#include <QObject>
#include <QSerialPortInfo>
#include <QList>
#include <QString>
#include <QAbstractListModel>
#include <serialportinfo.h>

// BaudInfo类继承自QAbstractListModel，用于管理波特率信息
class BaudInfo : public QAbstractListModel
{
    // 宏，用于声明Q_OBJECT属性，使类支持Qt元对象系统
    Q_OBJECT
public:
    // 定义BaudInfoRoles枚举，用于数据访问和表示
    enum BaudInfoRoles {
        baudRole = Qt::UserRole + 1,
    };

    // 构造函数，接受一个父对象
    BaudInfo(QObject *parent = 0);

    // 添加一个新的波特率到模型
    Q_INVOKABLE void addBaud(qint32 &baud);

    // 添加所有可用的波特率到模型
    Q_INVOKABLE void addAll();

    // 清除模型中的所有波特率
    Q_INVOKABLE void clear();

    // 获取波特率115200的索引，如果不存在则返回9600的索引
    Q_INVOKABLE int getIndexOf115(); //得到波特率115200的index(为使用方便，直接就显示9600)

    // 返回模型中的行数
    int rowCount(const QModelIndex & parent = QModelIndex()) const;

    // 返回指定模型索引和角色的数据
    QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const;

protected:
    // 返回一个哈希表，将自定义角色映射到角色名称
    QHash<int, QByteArray> roleNames() const;
private:
    // 波特率信息列表
    QList<qint32> m_baudInfo;
    // 波特率115200的索引
    quint8 m_indexOf115;

};

#endif // BAUDINFO_H
